LODSB Загрузка строки из байтов

Флаги не меняются.

Команда:

LODSB 

Логика:

AL = (DS:SI)
                     if DF = 0
                         SI = SI + 1
                     else
                         SI = SI - 1 

Команда LODSB передает байт, расположенный по адресу DS:SI в AL, а также инкрементирует или декрементирует SI (в зависимости от состояния признака направления DF), чтобы указатель переместился на следующий байт строки.

Операнды Такт байты (слова)ОбращенияБайтыПример
нет операндов12-1LODSB
(повтор) 9+13/rep1/rep 1REP LODSB

Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AL.
Следующий пример иллюстрирует пересылку восьми байтов из INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)

INIT_PORT:
DB     '$CMD0000'      			;Строка, которую мы хотим
                                       	;переслать
                        
CLD                    			;Будем передвигаться
                                        	;в прямом направлении
LEA    SI,INIT_PORT    			;Засылаем в SI стартовый
                                        	;адрес строки
MOV    CX,8            			;CX является счетчиком
                                        	;для команды LOOP
AGAIN:  LODSB                  		;Загружаем байт в AL...
OUT    250,AL          			;  ...и высылаем его в порт
LOOP   AGAIN
Hosted by uCoz